# encoding: utf-8
"""
@Author: xiaxin
@ModuleName: reverse_str
@Time: 2020/3/8
@Desc:
"""


# 输入一个英文句子,翻转句子中的单词顺序,但单词内字符的顺序不变

import re


def reverse_str(content: str):
    print(content)

    match = re.compile('[,.!?<>\"\'\t\r\n]')  # 做标点符号的正则匹配
    lst = []  # 翻转字符的列表

    # 元字符进行以空格所有翻转
    for k, v in enumerate(content[::-1].split()):
        # 匹配带非标点之类的字符进行翻转
        if not match.findall(v):
            lst.append(v[::-1])
        else:
            # 匹配标点之类的字符进行翻转, 标点一般在翻转后的第一个元素上,所以不进行翻转
            lst.append(f'{v[0]}{v[1::][::-1]}')

    return ' '.join(lst)


if __name__ == '__main__':
    s1 = """No matter how bad your heart has been broken, the world doesn’t stop for your grief. The sun comes right back up the next day."""
    print(reverse_str(s1))


# 很好，主要就是标点的问题。考虑的非常周全。
